3 namespace MediaWiki\Auth
;
8 abstract class AuthenticationRequestTestCase
extends \MediaWikiTestCase
{
9 abstract protected function getInstance( array $args = [] );
12 * @dataProvider provideGetFieldInfo
14 public function testGetFieldInfo( array $args ) {
15 $info = $this->getInstance( $args )->getFieldInfo();
16 $this->assertType( 'array', $info );
18 foreach ( $info as $field => $data ) {
19 $this->assertType( 'array', $data, "Field $field" );
20 $this->assertArrayHasKey( 'type', $data, "Field $field" );
21 $this->assertArrayHasKey( 'label', $data, "Field $field" );
22 $this->assertInstanceOf( 'Message', $data['label'], "Field $field, label" );
24 if ( $data['type'] !== 'null' ) {
25 $this->assertArrayHasKey( 'help', $data, "Field $field" );
26 $this->assertInstanceOf( 'Message', $data['help'], "Field $field, help" );
29 if ( isset( $data['optional'] ) ) {
30 $this->assertType( 'bool', $data['optional'], "Field $field, optional" );
32 if ( isset( $data['image'] ) ) {
33 $this->assertType( 'string', $data['image'], "Field $field, image" );
36 switch ( $data['type'] ) {
43 $this->assertArrayHasKey( 'options', $data, "Field $field" );
44 $this->assertType( 'array', $data['options'], "Field $field, options" );
45 foreach ( $data['options'] as $val => $msg ) {
46 $this->assertInstanceOf( 'Message', $msg, "Field $field, option $val" );
56 $this->fail( "Field $field, unknown type " . $data['type'] );
62 public static function provideGetFieldInfo() {
69 * @dataProvider provideLoadFromSubmission
72 * @param array|bool $expectState
74 public function testLoadFromSubmission( array $args, array $data, $expectState ) {
75 $instance = $this->getInstance( $args );
76 $ret = $instance->loadFromSubmission( $data );
77 if ( is_array( $expectState ) ) {
78 $this->assertTrue( $ret );
79 $expect = call_user_func( [ get_class( $instance ), '__set_state' ], $expectState );
80 $this->assertEquals( $expect, $instance );
82 $this->assertFalse( $ret );
86 abstract public function provideLoadFromSubmission();